package com.tmpt.utils.report;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import com.tmpt.utils.DateTool;

import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Helen
 * @version 1.0
 * @date 2020/1/15 10:41
 * @Description:
 */
public class Snippet {

    // 利用模板生成pdf
    public static void fillTemplate1() {
        String templatePath = "d:/Report/template4Random.pdf";
        // 生成的新文件路径
        String newPDFPath = "d:/Report/1.pdf";
        PdfReader reader;
        FileOutputStream out;
        ByteArrayOutputStream bos;
        PdfStamper stamper;

        //每一条数据代表一个pdf表格
        List<PdfReader> list = new ArrayList();
        try {
            // 输出流
            out = new FileOutputStream(newPDFPath);
            for(int j=0;j<10;j++){
                // 读取pdf模板
                reader = new PdfReader(templatePath);
                bos = new ByteArrayOutputStream();
                stamper = new PdfStamper(reader, bos);
                String dealTimeStr = "";
                AcroFields form = stamper.getAcroFields();
                try {
                    dealTimeStr = DateTool.date2String(DateTool.string2DateForAnyFormat(DateTool.getCurrentDateStr(), "yyyy-MM-dd"), "yyyy年MM月dd日");
                } catch (Exception e) {
                }
                String[] str = {dealTimeStr, "跨门经营（    ）", "餐厨垃圾、废弃油脂产生单位（   ）", "生活垃圾（   ）", "建筑工地、中转码头（     )",
                        "中建三局集团有限公司-九庐", "1.对夜间建筑施工作业的检查 ; " + "2.对建筑垃圾、工程渣土产生单位申报以及委托运输情况的 检查 ; \n" +
                        "3.对建筑垃圾、工程渣土承运单位的运输许可证以及承运的 建筑垃圾、工程渣土处置证情况的检查 ; \n" +
                        "4.对运输建筑垃圾 .工程渣土的车船运输规范的检查。_存在问题", "463", "463",  "检查人员（签名）姚强 ,周佳炯"+j
                };
                int i = 0;
                java.util.Iterator<String> it = form.getFields().keySet().iterator();
                while (it.hasNext()) {
                    String name = it.next().toString();
                    String value = str[i++];
                    System.out.println(name + ":" + value);
                    form.setField(name, value);
                }
                stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑，一定要设为true
                stamper.close();
                PdfReader pdfReader = new PdfReader(bos.toByteArray());
                list.add(pdfReader);
            }


            Document document = new Document();
            PdfCopy copy = new PdfCopy(document, out);
            document.open();
            for(int k=0; k<list.size();k++){
                PdfReader pdfReader = list.get(k);
                document.newPage();
                copy.addDocument(pdfReader);
            }

            document.close();


        } catch (IOException e) {
            System.out.println(1);
        } catch (DocumentException e) {
            System.out.println(2);
        }

    }

    // 利用模板生成pdf
    public static void fillTemplate() {
        String templatePath = "d:/Report/template4Random.pdf";
        // 生成的新文件路径
        String newPDFPath = "d:/Report/ceshi.pdf";
        PdfReader reader;
        FileOutputStream out;
        ByteArrayOutputStream bos;
        PdfStamper stamper;
        try {
            out = new FileOutputStream(newPDFPath);// 输出流
            reader = new PdfReader(templatePath);// 读取pdf模板
            bos = new ByteArrayOutputStream();
            stamper = new PdfStamper(reader, bos);
            AcroFields form = stamper.getAcroFields();

            String dealTimeStr = "";
            try {
                dealTimeStr = DateTool.date2String(DateTool.string2DateForAnyFormat(DateTool.getCurrentDateStr(), "yyyy-MM-dd"), "yyyy年MM月dd日");
            } catch (Exception e) {
            }
            String[] str = {dealTimeStr,
                    "跨门经营（    ）",
                    "餐厨垃圾、废弃油脂产生单位（   ）",
                    "生活垃圾（   ）",
                    "建筑工地、中转码头（     )",
                    "中建三局集团有限公司-九庐",
                    "1.对夜间建筑施工作业的检查 ; \n" +
                            "2.对建筑垃圾、工程渣土产生单位申报以及委托运输情况的 检查 ; \n" +
                            "3.对建筑垃圾、工程渣土承运单位的运输许可证以及承运的 建筑垃圾、工程渣土处置证情况的检查 ; \n" +
                            "4.对运输建筑垃圾 .工程渣土的车船运输规范的检查。_存在问题",
                    "463",
                    "463",
                    "检查人员（签名）姚强 ,周佳炯"
            };
            int i = 0;
//            BaseFont baseFont = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
            java.util.Iterator<String> it = form.getFields().keySet().iterator();
            while (it.hasNext()) {
                String name = it.next().toString();
                String value = str[i++];
//                System.out.println(name + ":" + value);
                form.setField(name, value);
//                form.setFieldProperty(name, "textfont", baseFont, null);

            }
            stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑，一定要设为true
            stamper.close();

            Document doc = new Document();
            PdfCopy copy = new PdfCopy(doc, out);
            doc.open();
            PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);
            copy.addPage(importPage);
            doc.close();

        } catch (IOException e) {
            System.out.println(1);
        } catch (DocumentException e) {
            System.out.println(2);
        }

    }

    public static void main(String[] args) {
        fillTemplate1();
    }

}
